home *** CD-ROM | disk | FTP | other *** search
- (***************************************************
-
- Ant Movie Catalog importation script
- www.antp.be/software/moviecatalog/
-
- [Infos]
- Authors=Yuri Vlasov (<link>wildfish@mail.ru</link>)
- Title=alldvd.ru
- Description=Import data & picture from ALLDVD.RU
- Site=alldvd.ru
- Language=RU
- Version=1.0 (08.02.2005)
- Requires=3.5.0
- Comments=
- License=
- GetInfo=1
-
- [Options]
-
- ***************************************************)
-
- program alldvd_ru;
-
- const
- BaseAddress = 'http://alldvd.ru/php/';
-
- var
- MovieName: string;
-
- //==============================================================================
- procedure AnalyzePage(Address: string);
- var
- Page: TStringList;
- LineNr: Integer;
- Line: string;
- TextBlock: string;
- BeginPos, EndPos: Integer;
- s: string;
- begin
- Page := TStringList.Create;
- Page.Text := GetPage(Address);
-
- if pos('<strong>╨┼╟╙╦▄╥└╥ ╧╬╚╤╩└</strong>', Page.Text) = 0 then
- begin
- //URL
- if CanSetField(fieldURL) then
- SetField(fieldURL, Address);
-
- AnalyzeVideoPage(Page);
- end
- else
- begin
- PickTreeClear;
- LineNr := FindLine('<img src=../images/trans.gif width=300 height=1 border=0><br><strong>', Page, 0);
- if LineNr > -1 then
- begin
- PickTreeAdd('╨στ≤δⁿ≥α≥√ ∩εΦ±Ωα "'+MovieName+'"', '');
- AddMoviesTitles(Page, LineNr);
- end;
-
- LineNr := FindLine('[1-10]</span> <a href=', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- s := '[1-10]</span> <a href=';
- BeginPos := Pos(s, Line) + Length(s);
- EndPos := Pos('>[11-20]</a>', Line);
- s := Copy(Line, BeginPos, EndPos - BeginPos);
- // PickTreeMoreLink(BaseAddress + s);
- PickTreeMoreLink('http://alldvd.ru/php/content.php?group=namedvd&slovo=' + UrlEncode(MovieName) + '&code1=0&page=1');
- end;
-
- if PickTreeExec(Address) then
- AnalyzePage(Address);
- end;
-
- Page.Free;
- end;
-
- //==============================================================================
- function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
- var
- i: Integer;
- begin
- Result := -1;
- if StartAt < 0 then
- StartAt := 0;
- for i := StartAt to List.Count-1 do
- if Pos(AnsiUpperCase(Pattern), AnsiUpperCase(List.GetString(i))) <> 0 then
- begin
- result := i;
- Break;
- end;
- end;
-
- //==============================================================================
- procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
- var
- Line: string;
- MovieTitle, MovieAddress, s: string;
- StartPos, EndPos: Integer;
- begin
- repeat
- Line := Page.GetString(LineNr);
- s := '<img src=../images/trans.gif width=300 height=1 border=0><br><strong>';
- StartPos := Pos(s, Line);
- if StartPos > 0 then
- begin
- Delete (Line, 1, StartPos + Length(s) - 1);
- MovieTitle := Copy(Line, 1, Pos('</strong>', Line));
- s := '<A href=';
- StartPos := Pos(s, Line);
- if StartPos > 0 then
- begin
- Delete (Line, 1, StartPos + Length(s) - 1);
- MovieAddress := Copy(Line, 1, Pos('><', Line)-1);
-
- HTMLDecode(MovieTitle);
- HTMLRemoveTags(MovieTitle);
- PickTreeAdd(MovieTitle, BaseAddress + MovieAddress);
- end;
- end;
-
- LineNr := LineNr + 1;
- until LineNr > Page.Count;
- end;
-
- //==============================================================================
- function GetText (Line: string; sBegin, sEnd: string): string;
- var
- BeginPos, EndPos: Integer;
- s: string;
- begin
- Result := '';
- BeginPos := Pos(sBegin, Line) + Length(sBegin);
- EndPos := Pos(sEnd, Line);
- if (BeginPos = 0) then BeginPos := 1;
- if (EndPos = 0) then EndPos := Length(Line);
-
- s := Copy(Line, BeginPos, EndPos - BeginPos);
- HTMLDecode(s);
- HTMLRemoveTags(s);
- Result := Trim(s);
- end;
-
- //==============================================================================
- procedure AnalyzeVideoPage(Page: TStringList);
- var
- Line, Value, Value2, FullValue: string;
- LineNr, MovieLength: Integer;
- BeginPos, EndPos: Integer;
- MovieName, s, sResult: string;
- begin
- s := '<TITLE>DVD Φφ≥σ≡φσ≥-∞απατΦφ - DVD-ΣΦ±Ω: ';
- LineNr := FindLine(s, Page, 0);
- if LineNr = -1 then exit;
-
- // Title
- Line := Page.GetString(LineNr);
- Delete(Line, 1, Pos(s, Line) + Length(s) - 1);
- EndPos := Pos('rus', Line);
- if EndPos = 0 then
- EndPos := Pos(' / ', Line);
- if EndPos = 0 then
- EndPos := Length(Line);;
- s := Copy(Line, BeginPos, EndPos - BeginPos - 1);
- HTMLDecode(s);
- HTMLRemoveTags(s);
- s := Trim(s);
- MovieName := s;
- if CanSetField(fieldTranslatedTitle) then
- SetField(fieldTranslatedTitle, MovieName);
-
- //Original Title
- if CanSetField(fieldOriginalTitle) then
- begin
- Delete(Line, 1, Length(MovieName) - 1);
- BeginPos := Pos('rus', Line) + 3;
- EndPos := Pos(' / ', Line) + 3;
- if BeginPos < EndPos then
- BeginPos := EndPos;
-
- s := Copy(Line, BeginPos, Pos('</TITLE>', Line));
- HTMLDecode(s);
- HTMLRemoveTags(s);
- s := Trim(s);
- SetField(fieldOriginalTitle, s);
- end;
-
- //Actors
- if CanSetField(fieldActors) then
- begin
- s := '┬ ≡εδ ⌡:';
- LineNr := FindLine(s, Page, 0);
- if LineNr <> -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := Pos(s, Line) + Length(s) - 1;
- Delete(Line, 1, BeginPos);
- EndPos := Pos('╨σµΦ±±σ≡√:', Line)-1;
- if EndPos = 0 then EndPos := Length(Line);
- s := Copy(Line, 1, EndPos);
- s := StringReplace(s, '</a>', ',</a>');
- HTMLDecode(s);
- HTMLRemoveTags(s);
- s := Trim(s);
- Delete(s, Length(s), Length(s));
- SetField(fieldActors, s);
- end;
- end;
-
- //Director
- if CanSetField(fieldDirector) then
- begin
- s := '╨σµΦ±±σ≡√:';
- LineNr := FindLine(s, Page, 0);
- if LineNr <> -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := Pos(s, Line) + Length(s) - 1;
- Delete(Line, 1, BeginPos);
- EndPos := Pos('╞αφ≡:', Line)-1;
- if EndPos = 0 then EndPos := Length(Line);
- s := Copy(Line, 1, EndPos);
- s := StringReplace(s, '</a>', ',</a>');
- HTMLDecode(s);
- HTMLRemoveTags(s);
- s := Trim(s);
- if Pos(',', s) = Length(s) then
- Delete(s, Length(s), Length(s));
- SetField(fieldDirector, s);
- end;
- end;
-
- //Category
- if CanSetField(fieldCategory) then
- begin
- s := '╞αφ≡:';
- LineNr := FindLine(s, Page, 0);
- if LineNr <> -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := Pos(s, Line) + Length(s) - 1;
- Delete(Line, 1, BeginPos);
-
- s := Copy(Line, 1, Length(Line));
- sResult := s;
-
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- while (Pos('<br>', Line) = 0) do
- begin
- sResult := sResult + ',' + Line;
-
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- end;
-
- HTMLDecode(sResult);
- HTMLRemoveTags(sResult);
- sResult := Trim(sResult);
- SetField(fieldCategory, sResult);
- end;
- end;
-
- //fieldLanguages
- if CanSetField(fieldLanguages) then
- begin
- s := '▀τ√Ω Φ ±≥αφΣα≡≥ τΓ≤Ωα:';
- LineNr := FindLine(s, Page, 0);
- if LineNr <> -1 then
- begin
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- sResult := '';
- while (Pos('╥Φ∩ ΣΦ±Ωα:', Line)=0) do
- begin
- EndPos := Pos(' - ', Line)-1;
- s := Copy(Line, 1, EndPos);
- if sResult = '' then
- sResult := sResult + s
- else
- sResult := sResult + ', ' + s;
-
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- end;
-
- HTMLDecode(sResult);
- HTMLRemoveTags(sResult);
- sResult := Trim(sResult);
- SetField(fieldLanguages, sResult);
- end;
- end;
-
- //fieldSubtitles
- if CanSetField(fieldSubtitles) then
- begin
- s := '▀τ√Ω ±≤ß≥Φ≥≡εΓ:';
- LineNr := FindLine(s, Page, 0);
- if LineNr <> -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := Pos(s, Line) + Length(s) - 1;
- Delete(Line, 1, BeginPos);
-
- s := Copy(Line, 1, Length(Line));
- sResult := s;
-
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- while (Pos('<br>', Line) = 0) do
- begin
- sResult := sResult + ', ' + s;
-
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- end;
-
- HTMLDecode(sResult);
- HTMLRemoveTags(sResult);
- sResult := Trim(sResult);
- SetField(fieldSubtitles, sResult);
- end;
- end;
-
- //fieldLength
- if CanSetField(fieldLength) then
- begin
- s := '─δΦ≥σδⁿφε±≥ⁿ ΣΦ±Ωα:';
- LineNr := FindLine(s, Page, 0);
- if LineNr <> -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := Pos(s, Line) + Length(s) - 1;
- Delete(Line, 1, BeginPos);
- EndPos := Pos('∞Φφ.', Line)-1;
- if EndPos = 0 then EndPos := Length(Line);
- s := Copy(Line, 1, EndPos);
- HTMLDecode(s);
- HTMLRemoveTags(s);
- s := Trim(s);
- SetField(fieldLength, s);
- end;
- end;
-
- //fieldDescription
- if CanSetField(fieldDescription) then
- begin
- s := '<strong>╩ε≡ε≥Ωε ε ⌠Φδⁿ∞σ</strong>';
- LineNr := FindLine(s, Page, 0);
- if LineNr <> -1 then
- begin
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- sResult := '';
- while (Pos('</td>', Line)=0) do
- begin
- sResult := sResult + Line;
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- end;
-
- sResult := StringReplace(sResult, '<br>',#13#10);
- sResult := StringReplace(sResult, '<BR>',#13#10);
- HTMLDecode(sResult);
- HTMLRemoveTags(sResult);
- SetField(fieldDescription, sResult);
- end;
- end;
-
- //Picture
- if CanSetPicture then
- begin
- LineNr := FindLine('<FORM action=../php/zakaz.php method=post target=bin>', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr+1);
- s := '<IMG src="';
- Delete (Line, 1, Pos(s, Line) + Length(s)-1);
- BeginPos := 1;
- EndPos := Pos('JPG', AnsiUpperCase(Line)) + 3;
- if (BeginPos <> 0) and (EndPos <> 0) then
- begin
- s := Copy(Line, BeginPos, EndPos - BeginPos);
- s := Trim(s);
- GetPicture(BaseAddress + s);
- end;
- end;
- end;
- end;
-
- //==============================================================================
- //==============================================================================
- //==============================================================================
- begin
- if CheckVersion(3,5,0) then
- begin
- MovieName := GetField(fieldTranslatedTitle);
- if MovieName = '' then
- MovieName := GetField(fieldOriginalTitle);
-
- if Input('Import from alldvd.ru', 'Enter the title of the movie:', MovieName) then
- begin
- AnalyzePage('http://alldvd.ru/php/content.php?group=namedvd&slovo=' + UrlEncode(MovieName) + '&code1=0&page=0');
- end;
- end
- else
- ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
- end.
-